<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>median_absolute_deviation 聚合 | ElasticSearch 7.7 权威指南中文版</title>
	<meta name="keywords" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <meta name="description" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
	<script>
	var _link = 'search-aggregations-metrics-median-absolute-deviation-aggregation.html';
    </script>
</head>
<body>
<div class="main-container">
    <section id="content">
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.7/search-aggregations-metrics-median-absolute-deviation-aggregation.html" rel="nofollow" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/7.7/search-aggregations-metrics-median-absolute-deviation-aggregation.html</a>, 原文档版权归 www.elastic.co 所有<br/>本地英文版地址: <a href="../en/search-aggregations-metrics-median-absolute-deviation-aggregation.html" rel="nofollow" target="_blank">../en/search-aggregations-metrics-median-absolute-deviation-aggregation.html</a></div>
                        <!-- start body -->
                  <div class="page_header">
<strong>重要</strong>: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html" rel="nofollow">当前版本文档</a>。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch 权威指南 [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="search-aggregations.html">聚合</a></span>
»
<span class="breadcrumb-link"><a href="search-aggregations-metrics.html">度量聚合</a></span>
»
<span class="breadcrumb-node">median_absolute_deviation 聚合</span>
</div>
<div class="navheader">
<span class="prev">
<a href="search-aggregations-metrics-min-aggregation.html">« min 聚合</a>
</span>
<span class="next">
<a href="search-aggregations-metrics-percentile-aggregation.html">percentiles 聚合 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="search-aggregations-metrics-median-absolute-deviation-aggregation"></a>绝对中位差(median_absolute_deviation)聚合
</h2>
</div></div></div>
<p>
这个<code class="literal">single-value</code>(单值) 聚合近似于其搜索结果的<a href="https://en.wikipedia.org/wiki/Median_absolute_deviation" class="ulink" target="_top">绝对中位差</a><span class="remark">(median absolute deviation)</span>。  
</p>
<p>
绝对中位差是一个可变性的衡量标准。  

它是一个可靠的统计数据，这意味着它对于描述可能有异常值或可能不是正态分布的数据很有用。  

对于这样的数据，它可能比标准差<span class="remark">(standard deviation)</span>更具描述性。
</p>
<p>
它被计算为每个数据点与整个样本的中位数的偏差的中位数。

也就是说，对于随机变量X，绝对中位差是 median(|median(X) - X<sub>i</sub>|)。
</p>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_example_3"></a>示例
</h3>
</div></div></div>
<p>
假设我们的数据代表 1 到 5 星的产品评论。 

这样的评论通常被汇总为一个平均值，这很容易理解，但不能描述评论的可变性。

估算绝对中位差可以让我们了解到评论之间的差异有多大。  
</p>
<p>
在本例中，我们有一个平均评级为3星的产品。

让我们看看它的评级的绝对中位差，以确定它们的变化程度
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET reviews/_search
{
  "size": 0,
  "aggs": {
    "review_average": {
      "avg": {
        "field": "rating"
      }
    },
    "review_variability": {
      "median_absolute_deviation": {
        "field": "rating" <a id="CO193-1"></a><i class="conum" data-value="1"></i>
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/363.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO193-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p><code class="literal">rating</code> 必须是一个 numeric 字段</p>
</td>
</tr>
</table>
</div>
<p>
由此产生的绝对中位差值 <code class="literal">2</code> 告诉我们，在评级中有相当多的可变性。

点评的人肯定对这个产品有不同的看法。
</p>
<div class="pre_wrapper lang-console-result">
<pre class="programlisting prettyprint lang-console-result">{
  ...
  "aggregations": {
    "review_average": {
      "value": 3.0
    },
    "review_variability": {
      "value": 2.0
    }
  }
}</pre>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_approximation"></a>近似值
</h3>
</div></div></div>
<p>
计算绝对中位差的简单实现将整个样本存储在内存中，因此这种聚合计算的是近似值。

它使用 <a href="https://github.com/tdunning/t-digest" class="ulink" target="_top">TDigest数据结构</a> 来近似样本中值和样本中值偏差的中值。

有关 TDigests 的近似特征的更多信息，请参考 <a class="xref" href="search-aggregations-metrics-percentile-aggregation.html#search-aggregations-metrics-percentile-aggregation-approximation" title="Percentiles are (usually) approximate">百分位数(通常)是近似的</a>。
</p>
<p>
参数 <code class="literal">compression</code> 控制着资源使用和 TDigest 分位数近似值的精确度之间的权衡，因此也控制着该聚合的绝对中位差近似值的精确度。

较高的 <code class="literal">compression</code> 设置以较高的内存使用率为代价提供了更精确的近似值。

有关 TDigest 参数 <code class="literal">compression</code> 的特征的更多信息，请参考<a class="xref" href="search-aggregations-metrics-percentile-aggregation.html#search-aggregations-metrics-percentile-aggregation-compression" title="compression" rel="nofollow">compression</a>。
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET reviews/_search
{
  "size": 0,
  "aggs": {
    "review_variability": {
      "median_absolute_deviation": {
        "field": "rating",
        "compression": 100
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/364.console"></div>
<p>
此聚合的默认 <code class="literal">compression</code> 的值是1000。

在这个压缩级别上，该聚合通常与确切结果的差距在 5% 以内，但观察到的性能将取决于样本数据。  
</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_script_9"></a>脚本
</h3>
</div></div></div>
<p>
该度量聚合支持脚本。

在上面的例子中，产品评论的等级是 1 到 5。

如果我们想将它们修改为 1 到 10，可以使用脚本。
</p>
<p>如果要使用内联脚本：</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET reviews/_search
{
  "size": 0,
  "aggs": {
    "review_variability": {
      "median_absolute_deviation": {
        "script": {
          "lang": "painless",
          "source": "doc['rating'].value * params.scaleFactor",
          "params": {
            "scaleFactor": 2
          }
        }
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/365.console"></div>
<p>要指定一个存储的脚本：</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET reviews/_search
{
  "size": 0,
  "aggs": {
    "review_variability": {
      "median_absolute_deviation": {
        "script": {
          "id": "my_script",
          "params": {
            "field": "rating"
          }
        }
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/366.console"></div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_missing_value_8"></a>缺失的值
</h3>
</div></div></div>
<p>
参数 <code class="literal">missing</code> 定义应该如何处理有缺失值的文档。

默认情况下，它们将被忽略，但也可以将它们视为有一个值。
</p>
<p>
让我们乐观一点，假设一些点评的人非常喜欢这个产品，以至于忘记给它打分。我们会给他们 5 颗星：
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET reviews/_search
{
  "size": 0,
  "aggs": {
    "review_variability": {
      "median_absolute_deviation": {
        "field": "rating",
        "missing": 5
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/367.console"></div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="search-aggregations-metrics-min-aggregation.html">« min 聚合</a>
</span>
<span class="next">
<a href="search-aggregations-metrics-percentile-aggregation.html">percentiles 聚合 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>